package market

import (
	"context"
	"git.900sui.cn/kc/rpcinterface/interface/cards"
	"git.900sui.cn/kc/rpcinterface/interface/common"
	"git.900sui.cn/kc/rpcinterface/interface/order"
)

/*
	营销管理-AI拼团活动
*/
const (
	// 营销类型 1-优惠券；2-一元体验；3-AI拼团；4-共享卡
	MARKET_TYPE_DISCOUNT_COUPON = 1
	MARKET_TYPE_EXPERIENCE      = 2
	MARKET_TYPE_GROUP_BOOKING   = 3
	MARKET_TYPE_SHARE_CARD      = 4
	// 参团限制：0-所有客户均可参团；0-仅限会员参团
	GROUP_LIMIT_ALL    = 0
	GROUP_LIMIT_MEMBER = 1
	// 是否限购：0-不限购；1-限购
	GROUP_PURCHASE_NO  = 0
	GROUP_PURCHASE_YES = 1
	// 是否开启凑团：0-不开启；1-开启
	COLLECT_GROUP_NO  = 0
	COLLECT_GROUP_YES = 1
	// 是否开启模拟成团：0-不开启；1-开启
	SIMULATION_CLUSTERING_NO  = 0
	SIMULATION_CLUSTERING_YES = 1
	// 是否显示参团人数：0-不开启；1-开启
	SHOW_NUM_NO  = 0
	SHOW_NUM_YES = 1
	// 活动状态：0-未开始；1-进行中；2-已结束（包含已删除）
	GROUP_STATUS_NOT_STARTED = 0
	GROUP_STATUS_UNDERWAY    = 1
	GROUP_STATUS_FINISHED    = 2
	// 是否删除：0-未删除；1-已删除
	GROUP_DELETE_NO  = 0
	GROUP_DELETE_YES = 1
	// 总店营销功能是否开启 0-不开启；1-开启
	MARKET_SWITCH_CLOSE = 0
	MARKET_SWITCH_OPEN  = 1

	// 用户拼团状态：0-等待成团；1-拼团成功；2-拼团失败
	USER_GROUP_STATUS_WAIT    = 0
	USER_GROUP_STATUS_SUCCEED = 1
	USER_GROUP_STATUS_FAIL    = 2
	// 拼团类型：0-发起拼团；1-参与拼团
	JOIN_GROUP_TYPE_LAUNCH        = 0
	JOIN_GROUP_TYPE_PARTICIPATION = 1
	// 操作库存动作：1-冻结库存；2-释放库存
	GROUP_FROZEN_STOCK  = 1
	GROUP_RELEASE_STOCK = 2
)

// 空结构体
type EmptyStruct struct {
	Lng   float64
	Lat   float64
	Cid   int
}

// 总店更改指定营销工具的状态-入参
type ArgsBusChangeMarketSwitch struct {
	common.BsToken
	Id         int
	MarketType int // 营销类型 1-优惠券；2-一元体验；3-AI拼团；4-共享卡
	Status     int // 总店营销功能是否开启 0-不开启；1-开启
}

// 获取总店现有的营销工具-出参
type ReplyGetBusMarketTool struct {
	Id                   int
	BusId                int
	DiscountCouponStatus int // 优惠券功能是否开启：0-未开启；1-开启
	ExperienceStatus     int // 一元体验功能是否开启：0-未开启；1-开启
	GroupBookingStatus   int // AI拼团功能是否开启：0-未开启；1-开启
	ShareCardStatus      int // 共享卡功能是否开启：0-未开启；1-开启
}

// 营销管理-AI拼团活动基础结构（不包含活动的产品）
type GroupBookingBase struct {
	Id                   int
	BusId                int    // 所属总店id
	Name                 string `must:"Y" length:"50"` // 活动名称
	ActiveStartTime      int64  // 活动开始时间
	ActiveEndTime        int64  // 活动结束时间
	ExpirationDay        int    `must:"Y" length:"10"` // 团有效期-天数
	ExpirationHour       int    `must:"Y" length:"10"` // 团有效期-小时
	ExpirationMinute     int    `must:"Y" length:"10"` // 团有效期-分钟
	IsLimit              int    `length:"1"`           // 参团限制：0-所有客户均可参团；1-仅限会员参团
	ActiveShopNum        int    // 活动门店数量
	IsPurchase           int    `length:"1"`  // 是否限购：0-不限购；1-限购
	PurchaseNum          int    `length:"10"` // 限购次数：每人每天能购买几次
	CollectGroup         int    `length:"1"`  // 是否开启凑团：0-不开启；1-开启
	SimulationClustering int    `length:"1"`  // 是否开启模拟成团：0-不开启；1-开启
	ShowNum              int    `length:"1"`  // 是否显示参团人数：0-不开启；1-开启
	Status               int    // 活动状态：0-未开始；1-进行中；2-已结束（包含已删除）
	IsDel                int    // 是否删除：0-未删除；1-已删除
	DelTime              int64  // 删除时间
	CreateTime           int64  // 活动创建时间
}

// AI拼团活动产品基础结构
type ActiveProductBase struct {
	Id           int
	ItemId       int                       `must:"Y" length:"10"` // 项目/卡项id，分别对应single_id/card_id
	Name         string                    // 项目/卡项名字，
	SspName      string                    // 单项目规格名
	RealPrice    float64                   // 产品售价
	ItemType     int                       `must:"Y" length:"10"` // 产品类型：1=单项目 2-套餐 3=综合卡 4=限时卡 5=限次卡 6=限时限次卡 7=充值卡 8=身份卡
	SspId        int                       `length:"10"`          // 单项目规格id（只有item_type=0才有值）@kc_single_spec_price.ssp_id
	Stock        int                       `must:"Y" length:"10"` // 活动库存
	ConsumeStock int                       // 已消耗的库存
	FrozenStock  int                       // 冻结库存
	Details      []ActiveProductDetailBase // 活动产品
}

// AI拼团活动产品详情
type ActiveProductDetailBase struct {
	Id         int
	GbpId      int     // 拼团活动产品id
	GroupNum   int     `must:"Y" length:"10"` // 成团人数
	GroupPrice float64 `must:"Y" length:"10"` // 拼团价格
}

// 新建AI拼团-入参
type ArgsAddNewGroup struct {
	common.BsToken
	GroupBookingBase
	ActiveStartTimeStr string            `must:"Y" length:"10"` // 活动开始时间字符串 格式：“2021-06-08”
	ActiveEndTimeStr   string            `must:"Y" length:"10"` // 活动结束时间字符串 格式：“2021-06-08”
	ActiveShopIds      string            `must:"Y"`             // 多个门店中间使用“,”隔开
	ActiveProduct      ActiveProductBase // 活动产品
}

// 编辑AI拼团-入参
type ArgsEditGroup struct {
	common.BsToken
	Id            int `must:"Y" length:"10"`
	BusId         int
	IsLimit       int    `length:"1"` // 参团限制：0-所有客户均可参团；1-仅限会员参团
	ActiveShopIds string // 多个门店中间使用“,”隔开
	Name          string `must:"Y" length:"50"` // 活动名称
}

// 总店/分店结束AI拼团-入参
type ArgsBusFinishGroup struct {
	common.BsToken
	GbIds []int `must:"Y"` // 拼团活动id
}

// 总店/分店删除AI拼团-入参
type ArgsBusDeleteGroup struct {
	common.BsToken
	GbIds []int `must:"Y"` // 拼团活动id
}

// 获取AI拼团详情-入参
type ArgsGetGroupInfo struct {
	ShopId int
	GbId   int `must:"Y" length:"10"` // 拼团活动id
}
type ActiveShopBase struct {
	ShopId     int
	ShopName   string // 分店门店名称
	BranchName string // 分店名称
}

// 获取AI拼团详情-出参
type ReplyGetGroupInfo struct {
	GroupBookingBase
	ActiveStartTimeStr string // 活动开始时间字符串
	ActiveEndTimeStr   string // 活动结束时间字符串
	ActiveProduct      ActiveProductBase
	ActiveShops        []ActiveShopBase
}

// 总店AI拼团列表-入参
type ArgsGetGroupLists struct {
	common.Paging
	ActiveShopId int `length:"10"` // 活动门店
	BusId        int
	ShopId       int    `length:"10"` // 用来标识是否是获取分店列表
	Status       string `length:"1"`  // 活动状态：0-未开始；1-进行中；2-已结束（包含已删除）,默认全部
	Name         string // 活动名称
}
type GetGroupListsBase struct {
	Id                 int
	BusId              int    // 所属总店id
	Name               string // 活动名称
	ActiveStartTime    int64  // 活动开始时间
	ActiveEndTime      int64  // 活动结束时间
	ActiveShopNum      int    // 活动门店数量
	StartGroupNum      int    // 开团数量
	StartGroupOrderNum int    // 参团订单数量
	EndGroupNum        int    // 成团数量
	EndGroupOrderNum   int    // 成团订单数量
	Status             int    // 活动状态：0-未开始；1-进行中；2-已结束（包含已删除）
	IsDel              int    // 是否删除：0-未删除；1-已删除
	CreateTime         int64  // 活动创建时间
}

// 分店AI拼团列表-出参
type ReplyGetGroupLists struct {
	TotalNum int
	Lists    []GetGroupListsBase
}

// 定时自动更新拼团活动状态-入参
type ArgsAutoUpdateGroupStatusRpc struct {
}

// 定时自动更新拼团活动状态-出参
type ReplyAutoUpdateGroupStatusRpc struct {
	NeedUpdateToUnderwayIds []int // 需要变更为进行中的拼团活动id
	NeedUpdateToFinishedIds []int // 需要变更为已结束的拼团活动id
}

// //获取App首页拼团项目详情-入参
// type ArgsGetAppGroupSingleInfo struct {
//	GbpId  int //拼团活动产品id
//	ShopId int //门店id
// }
//
// //获取App首页拼团项目详情-出参
// type ReplyGetAppGroupSingleInfo struct {
//	BusId           int                       //商家id
//	ShopId          int                       //门店id
//	GbId            int                       //拼团活动id
//	GbpId           int                       //拼团活动产品id
//	//ActiveStatus    int                       //活动状态
//	//ActiveStartTime int64                     //活动开始时间
//	//ActiveEndTime   int64                     //活动结束时间
//	SingleId        int                       //单项目id
//	RealPrice       float64                   //现价
//	Price           float64                   //标价
//	Sales           int                       //销售量
//	Name            string                    //单项目名称
//	SspId           int                       //单项目规格id
//	SspName         string                    //单项目规格名称
//	SsId            int                       //单项目在门店的id@kc_shop_single.ss_id
//	ImgUrl          string                    //单项目封面
//	SingleContext   []cards.SingleContextInfo //单项目内容
//	SortDesc        string                    //单项目短描述
//	MemberLev       cards.MemberLev           //会员折扣信息
//	Reminder        []cards.ReminderInfo      //单项目温馨提示
//	ShareLink       string                    //分享链接
//	Stock           int                       //活动库存
//	ConsumeStock    int                       //已消耗的库存
//	Details         []ActiveProductDetailBase //活动产品详情
// }

// 获取App首页拼团卡项详情-入参
type ArgsGetAppGroupItemInfo struct {
	Uid           int `length:"10"` // 用户uid saas和康享包使用，非必填
	common.Utoken     // 前端当前登录用户的登录信息 ， 非必传
	GbpId         int `must:"Y" length:"10"` // 拼团活动产品id
	ShopId        int `must:"Y" length:"10"` // 门店id
}

// 获取App首页拼团卡项详情-出参
type ReplyGetAppGroupItemInfo struct {
	BusId         int // 商家id
	ShopId        int // 门店id
	GbId          int // 拼团活动id
	GbpId         int // 拼团活动产品id
	GroupBaseInfo GroupBookingBase
	NowTime       int64  //当前时间
	ItemType      int    // 类型:1单项目 2套餐 3综合卡 4限时卡 5限次卡 6限时限次卡 7充值卡 8身份卡
	ItemId        int    // 预付卡id
	Name          string // 名称
	SspId         int    // 单项目规格id
	SsId          int    // 卡项在门店的id
	SspName       string
	ImgUrl        string                    // 封面图片
	RealPrice     float64                   // 售价
	Price         float64                   // 标价
	Sales         int                       // 销量
	Discount      string                    // 充值卡、身份卡折扣
	ServicePeriod int                       // 服务周期
	ValidCount    int                       // 包含单项目的总次数
	ShareLink     string                    // 分享链接
	Notes         []cards.CardNote          // 卡项温馨提示
	Stock         int                       // 活动库存
	FrozenStock   int                       // 冻结库存
	ConsumeStock  int                       // 已消耗的库存
	Details       []ActiveProductDetailBase // 活动产品详情
	SingleContext []cards.SingleContextInfo // 单项目内容
	SortDesc      string                    // 单项目短描述
	MemberLev     cards.MemberLev           // 会员折扣信息
	Reminder      []cards.ReminderInfo      // 单项目温馨提示
	AlbumPics     []cards.Img               // 相册图片
}

// 组团入参
type ArgsJoinGroup struct {
	Uid          int // 用户uid
	GbpdId       int // 拼团活动产品详情id
	JoinGroupId  int // 首次/建团 拼团的id@id，如果是首次发起拼团则为0
	BusId        int // 总店id
	ShopId       int // 门店ID
	ConsumeStock int // 需要消耗的库存
}

// 组团出参
type ReplyJoinGroup struct {
	Id int // 用户组团ID
	GroupStatus int //成团状态 0-待成团 1-已成团
}

// 拼团活动-适用门店-入参
type ArgsGetGroupApplyShops struct {
	Lng   float64
	Lat   float64
	GbpId int `must:"Y" length:"10"` // 拼团活动产品id
}

// 拼团活动-适用门店-出参
type ReplyGetGroupApplyShops struct {
	GroupCableShops []order.ReplyCableShopInfo
}

// 获取用户的AI拼团列表-入参
type ArgsGetUserJoinGroupLists struct {
	common.Utoken
	common.Paging
	Uid    int    // 用户id，非必填，sass或康享包使用时传入
	Status string `length:"1"` // 用户拼团状态：0-等待成团；1-拼团成功；2-拼团失败，默认全部
}
type GetUserJoinGroupListsBase struct {
	Id           int     // 组团id
	BusId        int     // 商家id
	ShopId       int     // 门店id
	Uid          int     // 用户uid
	JoinGroupId  int     // 拼团的id，如果是首次发起拼团则为0
	GbId         int     // 拼团活动id
	GbpId        int     // 拼团活动产品id
	ItemType     int     // 类型:1单项目 2套餐 3综合卡 4限时卡 5限次卡 6限时限次卡 7充值卡 8身份卡
	ItemId       int     // 预付卡id
	Name         string  // 名称
	SspId        int     // 单项目规格id
	SspName      string  // 单项目规格名称
	ImgUrl       string  // 封面图片
	RealPrice    float64 // 售价
	GroupPrice   float64 // 拼团价格
	JoinNum      int     // 参团人数
	ConsumeNum   int     // 成功参与拼团人数
	GroupEndTime int     // 拼团结束时间，如果join_type=1则该值为0
	JoinType     int     // 拼团类型：0-发起拼团；1-参与拼团
	Status       int     // 用户拼团状态：0-等待成团；1-拼团成功；2-拼团失败
	CreateTime   int64   // 组团创建时间
	NowTime      int64   //当前时间
}

// 获取用户的AI拼团列表-出参
type ReplyGetUserJoinGroupLists struct {
	TotalNum int
	Lists    []GetUserJoinGroupListsBase
}

// 判断卡项详情是否加入了AI拼团活动
type ArgsItemInfoIsJoinGroup struct {
	ItemType int
	ItemId   int
}

// 获取活动产品详情-用户待成团列表-入参
type ArgsGetUserWaitGroupLists struct {
	common.Paging
	ShopId int // 门店id
	GbpId  int `must:"Y" length:"10"` // 拼团活动产品id
}
type GetUserWaitGroupListsBase struct {
	Id           int     // 组团id
	BusId        int     // 商家id
	ShopId       int     // 门店id
	Uid          int     // 用户uid
	NickName     string  // 用户昵称
	AvatarImgUrl string  // 用户头像图片地址
	GbId         int     // 拼团活动id
	GbpId        int     // 拼团活动产品id
	RealPrice    float64 // 产品售价
	GroupPrice   float64 // 拼团价格
	JoinNum      int     // 参团人数
	ConsumeNum   int     // 成功参与拼团人数
	GroupEndTime int     // 拼团结束时间，如果join_type=1则该值为0
	NowTime      int64   //当前时间
}

// 获取活动产品详情-用户待成团列表-出参
type ReplyGetUserWaitGroupLists struct {
	TotalNum int
	Lists    []GetUserWaitGroupListsBase
}

// 获取参团详情-入参
type ArgsGetOfferedInfo struct {
	Id     int `must:"Y" length:"10"` // 组团id
	ShopId int `must:"Y" length:"10"` // 门店id
}

type OfferedUserBase struct {
	Uid          int
	NickName     string // 用户昵称
	AvatarImgUrl string // 用户头像图片地址
}

// 获取参团详情-出参
type ReplyGetOfferedInfo struct {
	Id              int               // 组团id
	ShopId          int               // 门店id
	Uid             int               // 用户uid
	ItemType        int               // 类型:1单项目 2套餐 3综合卡 4限时卡 5限次卡 6限时限次卡 7充值卡 8身份卡
	ItemId          int               // 预付卡id
	Name            string            // 名称
	SspId           int               // 单项目规格id
	SsId            int               // 单项目在门店的id
	SspName         string            // 单项目规格名称
	ServicePeriod   int               // 服务周期
	ImgUrl          string            // 封面图片
	RealPrice       float64           // 产品售价
	GroupPrice      float64           // 拼团价格
	JoinType        int               // 拼团类型：0-发起拼团；1-参与拼团
	JoinNum         int               // 参团人数
	ConsumeNum      int               // 成功参与拼团人数
	AnonymityNum    int               // 匿名参与拼团人数
	GroupEndTime    int               // 拼团结束时间，如果join_type=1则该值为0
	ShareLink       string            // 分享链接
	OfferedUserList []OfferedUserBase // 已参团的人员信息
	NowTime         int64             //当前时间
}

// 预付卡详情中拼团列表-入参
type ArgsPrepaidCardInfoLists struct {
	common.Paging
	BusId    int // 店铺id
	ShopId   int // 门店Id
	ItemId   int `must:"Y" length:"10"` // 单项目/卡项id
	ItemType int `must:"Y" length:"1"`  // 产品类型：1=单项目 2-套餐 3=综合卡 4=限时卡 5=限次卡 6=限时限次卡 7=充值卡 8=身份卡
}

type ReplyPrepaidCardInfoLists struct {
	TotalNum int
	Lists    []PrepaidCardBse
}

type PrepaidCardBse struct {
	GbId            int       // 拼团活动id
	GbpId           int       // 拼团活动Id
	Name            string    // 活动名称
	GroupNum        []int     // 成团人数，如：3 4
	Price           float64   // 标价
	GroupPrices     []float64 // 拼团价格(存在多个)
	GroupMinPrice   float64   // 拼团价格最低价
	SspId           int       // 单项目规格ID
	SspName         string    // 单项目规格名称
	ActiveStartTime int64     // 活动开始时间
	ActiveEndTime   int64     // 活动结束时间
	Status          int       // 活动状态：0-未开始；1-进行中
	NowTime         int64     //当前时间

}

// 获取门店内所有待成团的活动-入参
type ArgsGetShopAllWaitGroupLists struct {
	common.Paging
	ShopId int `must:"Y" length:"10"` // 门店id
}

// 获取门店内所有待成团的活动-出参
type ReplyGetShopAllWaitGroupLists struct {
	TotalNum int
	Lists    []GetUserJoinGroupListsBase
}

// 拼团-购买单项目/卡项时检查数据有效性&&获取拼团所需的基础信息-入参
type ArgsCheckAndGetGroupItemInfo struct {
	Uid         int // 购买人uid
	BusId       int // 总店id
	ShopId      int // 购买门店
	GbpdId      int // 拼团活动产品id（说明当前的订单时首次发起拼团）
	JoinGroupId int // 组团id（说明当前的订单时参与其他人发起的拼团）
	BuyNum      int // 购买的数量
}

// 拼团-购买单项目/卡项时检查数据有效性&&获取拼团所需的基础信息-出参
type ReplyCheckAndGetGroupItemInfo struct {
	GbpdId       int // 拼团活动产品详情id（说明当前的订单时首次发起拼团）
	JoinGroupId  int // 组团id（说明当前的订单时参与其他人发起的拼团）
	ItemId       int
	SspId        int
	ItemType     int
	Stock        int     // 总库存
	ConsumeStock int     // 已消耗库存
	GroupPrice   float64 // 拼团价格
}

// 删除单项目的时候需要校验是否有未结束的单项目、卡项
type ArgsDelItemCheckHasNoFinishGroup struct {
	BusId    int   // 总店id
	ShopId   int   // 门店id，如果不为0则代表是门店删除，否者为总店删除
	ItemIds  []int // 单项目、卡项ids
	ItemType int   // 类型：1=单项目 2-套餐 3=综合卡 4=限时卡 5=限次卡 6=限时限次卡 7=充值卡 8=身份卡
}

// 用户根据条件获取拼团列表-入参
type ArgsUserGetGroupLists struct {
	common.Paging
	// 刷选条件

}

// 用户根据条件获取拼团列表-出参
type ReplyUserGetGroupLists struct {
	TotalNum int
	Lists    []UserGetGroupInfo
}

type UserGetGroupInfo struct {
	Id                 int
	ShopId             int     // 门店Id
	ShopName           string  // 门店名称
	ShopBranchName     string  // 分店名称
	ShopAddress        string  // 分店地址
	ShopImgUrl         string  // 分店图片
	AttachmentDistance float64 // 附件距离
	Graded             float64 // 评分
	IndustryId         int     // 所属行业Id

	// 门店下拼团活动在线产品信息
	GroupBase []GroupBaseInfo
}

type GroupBaseInfo struct {
	GbId            int     // 拼团活动id
	Name            string  // 活动名称
	ActiveStartTime int64   // 活动开始时间
	ActiveEndTime   int64   // 活动结束时间
	Price           float64 // 标价
	RealPrice       float64 // 售价
	StockNum        int     // 剩余份数
}

// 根据shopIds获取最新的单项目和卡项活动数据-入参
type ArgsGetSingleCardAIProductByShopIds struct {
	ShopIds []int
}
type GetSingleCardAIProductByShopIdsBase struct {
	GbId            int
	ShopId          int
	GbpId           int     // 活动产品id
	ActiveStartTime int64   // 活动开始时间
	ActiveEndTime   int64   // 活动结束时间
	ItemType        int     // 产品类型：1=单项目 2-套餐 3=综合卡 4=限时卡 5=限次卡 6=限时限次卡 7=充值卡 8=身份卡
	ItemId          int     // 项目/卡项id，分别对应single_id/card_id
	ItemName        string  // 项目/卡项名字
	SspId           int     // 单项目规格id（只有item_type=0才有值）@kc_single_spec_price.ssp_id
	SspName         string  // 单项目规格名
	RealPrice       float64 // 产品售价
	GroupPrice      float64 // 拼团价格
}

// 根据shopIds获取最新的单项目和卡项活动数据-出参
type ReplyGetSingleCardAIProductByShopIds struct {
	SingleCardAIProductLists map[int][]cards.AiGroupList // key=shopId,value=门店最新的单项目和卡项
}

// 冻结/释放AI拼团库存
type ArgsFrozenOrReleaseStock struct {
	FrozenOrRelease int // 1-冻结；2-释放
	GbpdId          int
	JoinGroupId     int
	Stock           int
}

// 门店内活动拼团列表-入参
type ArgsShopGroupLists struct {
	common.Paging
	BusId  int // 门店
	ShopId int // 门店ID
}

// 门店内活动拼团列表-出参
type ReplyShopGroupLists struct {
	TotalNum int
	Lists    []ShopGroupListsBase
}
type ShopGroupListsBase struct {
	GbpId           int       // 拼团活动产品Id
	ShopId          int       // 门店id
	ItemType        int       // 卡项类型
	ItemId          int       // 卡项目ID
	ImgUrl          string    // 拼团活动图片
	Name            string    // 活动名称
	RealPrice       float64   // 售价
	GroupPrice      []float64 // 拼团价格[区间]
	ActiveStartTime int64     // 活动开始时间
	ActiveEndTime   int64     // 活动结束时间
	Status          int       // 活动状态
	NowTime         int64     //当前时间
}

//九百岁首页-懂生活（AI团和优惠体验）-出参
type AIBaseInfo struct {
	ShopId 			int
	GbpId           int    //Ai团活动产品id
	ItemType        int       // 卡项类型
	ItemId          int       // 卡项目ID
	Name            string //Ai团活动名称
	ActiveStartTime int64  // 活动开始时间
	ActiveEndTime   int64  // 活动结束时间
	ImgUrl          string // 拼团活动图片
}
type ExpericenceBaseInfo struct {
	ShopId 				int
	ExperienceId        int    //体验id
	ExperienceProductId int    //体验产品id
	Name                string //体验名称
	ImgUrl              string // 项目图片
	AvailableStock      int    //可用库存
}
type ReplyGetAIExperienceInfo struct {
	AIInfo          AIBaseInfo
	ExpericenceInfo ExpericenceBaseInfo
	NowTime         int64 //当前时间
}

type GroupBooking interface {
	// 获取总店现有的营销工具，如果数据不存在就插入一条默认的数据
	GetBusMarketTool(ctx context.Context, busId *int, reply *ReplyGetBusMarketTool) error
	// 总店更改指定营销工具的状态
	BusChangeMarketSwitch(ctx context.Context, args *ArgsBusChangeMarketSwitch, reply *bool) error
	// 总店新建AI拼团
	AddNewGroup(ctx context.Context, args *ArgsAddNewGroup, reply *bool) error
	// 总店编辑AI拼团
	EditGroup(ctx context.Context, args *ArgsEditGroup, reply *bool) error
	// 总店结束AI拼团
	BusFinishGroup(ctx context.Context, args *ArgsBusFinishGroup, reply *bool) error
	// 总店删除AI拼团
	BusDeleteGroup(ctx context.Context, args *ArgsBusDeleteGroup, reply *bool) error
	// 获取AI拼团详情
	GetGroupInfo(ctx context.Context, args *ArgsGetGroupInfo, reply *ReplyGetGroupInfo) error
	// 总店/分店AI拼团列表
	GetGroupLists(ctx context.Context, args *ArgsGetGroupLists, reply *ReplyGetGroupLists) error
	// 定时自动更新拼团活动状态：未开始->进行中；进行中->已结束
	AutoUpdateGroupStatusRpc(ctx context.Context, args *ArgsAutoUpdateGroupStatusRpc, reply *ReplyAutoUpdateGroupStatusRpc) error
	// //获取App首页拼团项目详情
	// GetAppGroupSingleInfo(ctx context.Context, args *ArgsGetAppGroupSingleInfo, reply *ReplyGetAppGroupSingleInfo) error
	// 获取App首页拼团卡项/项目详情
	GetAppGroupItemInfo(ctx context.Context, args *ArgsGetAppGroupItemInfo, reply *ReplyGetAppGroupItemInfo) error
	// 参加团（订单支付调用）
	JoinGroup(ctx context.Context, args *ArgsJoinGroup, reply *ReplyJoinGroup) error
	// 预付卡详情中拼团列表
	GetPrepaidCardInfoLists(ctx context.Context, args *ArgsPrepaidCardInfoLists, reply *ReplyPrepaidCardInfoLists) error
	// APP拼团列表
	GetAppUserGroupLists(ctx context.Context, args *ArgsUserGetGroupLists, reply *ReplyUserGetGroupLists) error
	// 拼团活动-适用门店
	GetGroupApplyShops(ctx context.Context, args *ArgsGetGroupApplyShops, reply *ReplyGetGroupApplyShops) error
	// 获取用户的AI拼团列表
	GetUserJoinGroupLists(ctx context.Context, args *ArgsGetUserJoinGroupLists, reply *ReplyGetUserJoinGroupLists) error
	// 判断卡项详情是否加入了AI拼团活动
	ItemInfoIsJoinGroup(ctx context.Context, args *ArgsItemInfoIsJoinGroup, reply *bool) error
	// 获取活动产品详情-用户待成团列表
	GetUserWaitGroupLists(ctx context.Context, args *ArgsGetUserWaitGroupLists, reply *ReplyGetUserWaitGroupLists) error
	// 获取参团详情
	GetOfferedInfo(ctx context.Context, args *ArgsGetOfferedInfo, reply *ReplyGetOfferedInfo) error
	// 定时自动更新待成团订单状态：有效期结束后后自动更改拼团状态为已完成
	AutoUpdateOfferedStatusRpc(ctx context.Context, args int, reply *bool) error
	// 获取门店内所有待成团的活动
	GetShopAllWaitGroupLists(ctx context.Context, args *ArgsGetShopAllWaitGroupLists, reply *ReplyGetShopAllWaitGroupLists) error
	// 拼团-购买单项目/卡项时检查数据有效性&&获取拼团所需的基础信息
	// （主要校验：是否超出限购，是否超出活动库存，是否适用当前门店，参团是否有所限制，是否在规定的活动日期之内）
	CheckAndGetGroupItemInfoRpc(ctx context.Context, args *ArgsCheckAndGetGroupItemInfo, reply *ReplyCheckAndGetGroupItemInfo) error
	// 删除单项目的时候需要校验是否有未结束的单项目、卡项，如果有则返回true
	DelItemCheckHasNoFinishGroupRpc(ctx context.Context, args *ArgsDelItemCheckHasNoFinishGroup, reply *bool) error
	// 根据shopIds获取最新的单项目和卡项活动数据
	GetSingleCardAIProductByShopIdsRpc(ctx context.Context, args *ArgsGetSingleCardAIProductByShopIds, reply *ReplyGetSingleCardAIProductByShopIds) error
	// 冻结/释放AI拼团库存，适用于下面情况：（下单支付完成前的时候冻结，订单逾期未支付取消的时候释放）
	FrozenOrReleaseStock(ctx context.Context, args *ArgsFrozenOrReleaseStock, reply *bool) error
	// 门店内活动拼团列表
	GetShopGroupLists(ctx context.Context, args *ArgsShopGroupLists, reply *ReplyShopGroupLists) error
	//九百岁首页-懂生活（AI团和优惠体验）
	GetAIExperienceInfo(ctx context.Context, args *EmptyStruct, reply *ReplyGetAIExperienceInfo) error
}
